Gestion de projet, Agilité, Tests

Pour suivre en live…​

http://bit.ly/jmb-agile

http://jmbhome.github.io/teaching/topics/agile.html

 

Gestion de projets

C’est quoi 1 projet ?

On appelle projet un ensemble finalisé d’activités et d’actions entreprises dans le but de répondre à un besoin défini dans des délais fixés et dans la limite d’une enveloppe budgétaire allouée.

Wikipedia
2014

 

Répondre au client
(qui paye)
dans la vraie vie
(les ressources sont limitées ET les obstacles matériels et humains sont sans limite)
JMI
2014

OK, allons-y …​

Eviter de répondre : hier (Sinon, c’est un processus de sauvetage et plus 1 projet)

…​ entre DEBUT et FIN, comment FAIRE ?

Option 1
se débrouiller (comme dans 'FAIRE les soldes')
Option 2
dérouler un process (comme dans '(RE)FAIRE son passeport')
Option 3
réaliser un projet

Depuis le temps que la notion de projet existe …​

7 projets sur 10 arrivent en retard ou jamais !

Revue Programmez!
Janvier 2014

 

Les causes :

 

Dans tous les cas, c’est l’équipe de développement qui est fautive.

Pourquoi est-ce si difficile ?

Pourtant :

Le problème

On n’a pas de méthode infaillible qui garantisse qu’une équipe projet atteindra les objectifs.

Pourquoi ?

Il s’agit de gérer une complexité métier, technique et humaine avec des ressources limitées (temps, moyens …​)

 

Seule certitude prévisible : il faudra s’adapter aux imprévus.

Le découpage en phases d’un projet logiciel

Ça n’empêche pas de définir de grandes étapes génériques que le projet devra franchir : ses PHASES

Un projet de développement logiciel se terminera de 'manière satisfaisante' si l’équipe fournit une application fiable, robuste et maintenable qui répond aux exigences du client.

 

fiable
fait ce qu’on attend d’elle dans les conditions fixées
robuste
supporte la charge, les erreurs des utilisateurs, les pannes etc
maintenable
ne demande pas d’être réécrite pour la moindre évolution

Produire des applications

 

BUILD
make, ant, Maven, Ivy, Gradle, etc.
cf. cours suivants…​
Gestion de projets
GitLab, le site pour héberger vos codes en utilisant .

Méthodes

R.A.C.H.E

La méthode préférée des étudiants La RACHE!

Voir l’excellent site parodique http://www.la-rache.com/.

Méthodes en Cascade ou Cycle en V

waterfall

 

Le cycle en V adopte :

 

v1

 

v2

 

v123

Un projet de développement de type cycle en V se terminera de manière satisfaisante si l’équipe arrive à remonter le 'V' dans de 'bonnes conditions'.

 

Arrêt du projet
  • l’application n’est pas livrable
  • au mieux des modules/classes de base peuvent être réutilisés
Dérive temporelle
  • la phase de codage et d’intégration est raccourcie
  • le produit livré a été 'trop peu' testé

 

En résumé :

 

Limites connues
  • ne décrit pas les phases de maintenance et d’évolution
  • ne prévoit pas qu’on revienne sur les étapes de conception ?
  • courbe a posteriori : quelle est la complexité estimée du projet à son début ?
  • l’application livrée est-elle conforme à sa documentation (et vice versa) ?

Du cycle en V aux cycles en W

Partons d’un exemple trivial

Example 1. Une application web de gestion d’urls

Développer une application web capable de collecter et d’afficher les urls collectées.

Cycle 0

Mise en place d’une infrastructure d’intégration

Solution retenue :

Cycle 1

Afficher les urls collectées

Solution retenue :

Cycle 2

Saisie et collecte des urls

Solution retenue :

Bilan de l’exemple trivial

 

w12

 

w32

 

w42

 

w52

 

w5b2

Les bénéfices reconnus

  • livre une application qui marche dès le cycle 1
  • gère la complexité et les problèmes d’intégration à chaque cycle
  • s’applique à un développement nouveau comme à une évolution
  • permet au client d’affiner ses exigences

 

Rappel :

Un projet de développement logiciel se terminera de 'manière satisfaisante' si l’équipe fournit une application …​…​, …​…​. et …​…​…​.. qui répond aux exigences du client.

 

Rappel :

Un projet de développement logiciel se terminera de 'manière satisfaisante' si l’équipe fournit une application fiable, robuste et maintenable qui répond aux exigences du client.

Les cas où ça ne marche pas

  • le client est (trop) absent
  • la conduite de la méthode choisie est approximative (dérive des livraisons)
  • les tests sont à l’abandon

Les problèmes nouveaux

  • qu’elle est la capacité de l’infrastructure initiale (cycle 0)
  • automatiser les tests de non régression : XP, T/BDD …​
  • approche ascendante ⇒ refactoring …​
  • comment gérer les livraisons fréquentes : intégration continue …​
  • que devient la documentation ???

V versus W

V
  • Expression des besoins
  • Spécifications
  • Conception générale et détaillée
  • Codage et tests
  • Intégration et tests
  • Livraison (recette)

V versus W (suite)

W
  • Cycle 0
  • Cycle 1 .. N
    • choisir des fonctionnalités
    • …​ coder/tester …​
    • livrer
    • ajuster la liste des demandes

Ce qui est toujours fait

Evaluer l’atteinte des objectifs

L’atteinte de tous les objectifs (et sous-objectifs) d’un projet doit être évaluée.

Quelle que soit la 'méthode de développement' employée, tout développement logiciel doit réaliser des 'tests unitaires' et des 'tests d’intégration'.

Aujourd’hui, ON DOIT
  • écrire systématiquement des programmes de test
  • exécuter très régulièrement ces programmes de tests

Ready for a quizz?

tuxteacher

 

Quizz

QUESTION
  • Connectez-vous sur : http://www.socrative.com/ (student login)
  • Ou téléchargez l’application pour étudiant socrative2
  • Choisissez la room JMB42
socrative1

The End    (for now)